package com.ruoyi.union.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.union.domain.SysActivity;
import com.ruoyi.union.domain.vo.SysActivityVo;

/**
 * 基层工会活动Service接口
 *
 * @author ruoyi
 * @date 2025-01-15
 */
public interface ISysActivityService extends IService<SysActivity>
{
    /**
     * 查询基层工会活动
     *
     * @param activityId 基层工会活动主键
     * @return 基层工会活动
     */
    public SysActivity selectSysActivityByActivityId(Long activityId);

    /**
     * 查询基层工会活动列表
     *
     * @param sysActivity 基层工会活动
     * @return 基层工会活动集合
     */
    public List<SysActivity> selectSysActivityList(SysActivity sysActivity);

    /**
     * 查询基层工会活动列表（带部门名称和发布人名称）
     *
     * @param sysActivity 基层工会活动
     * @return 基层工会活动集合
     */
    public List<SysActivityVo> selectSysActivityVoList(SysActivity sysActivity);

    /**
     * 新增基层工会活动
     *
     * @param sysActivity 基层工会活动
     * @return 结果
     */
    public int insertSysActivity(SysActivity sysActivity);

    /**
     * 修改基层工会活动
     *
     * @param sysActivity 基层工会活动
     * @return 结果
     */
    public int updateSysActivity(SysActivity sysActivity);

    /**
     * 批量删除基层工会活动
     *
     * @param activityIds 需要删除的基层工会活动主键集合
     * @return 结果
     */
    public int deleteSysActivityByActivityIds(Long[] activityIds);

    /**
     * 删除基层工会活动信息
     *
     * @param activityId 基层工会活动主键
     * @return 结果
     */
    public int deleteSysActivityByActivityId(Long activityId);

    /**
     * 发布活动（发起审批流程）
     *
     * @param sysActivity 活动信息
     * @return 结果
     */
    public boolean publishActivity(SysActivity sysActivity);

    /**
     * 审核活动
     *
     * @param activityId 活动ID
     * @param approvalStatus 审核状态
     * @param approvalComment 审核意见
     * @return 结果
     */
    public boolean approveActivity(Long activityId, String approvalStatus, String approvalComment);

    /**
     * 根据部门ID查询活动列表
     *
     * @param deptId 部门ID
     * @return 活动列表
     */
    public List<SysActivity> selectSysActivityByDeptId(Long deptId);

    /**
     * 根据发布人ID查询活动列表
     *
     * @param publisherId 发布人ID
     * @return 活动列表
     */
    public List<SysActivity> selectSysActivityByPublisherId(Long publisherId);

    /**
     * 更新活动状态
     *
     * @param activityId 活动ID
     * @param activityStatus 活动状态
     * @return 结果
     */
    public boolean updateActivityStatus(Long activityId, String activityStatus);

    /**
     * 更新活动报名人数
     *
     * @param activityId 活动ID
     * @return 结果
     */
    public boolean updateCurrentParticipants(Long activityId);
}
